package carte.terrain;

import java.awt.Color;
import java.util.ArrayList;

import carte.Cellule;
import carte.element.Water;

public class Earth extends Land {
	
	protected static Earth _instance;
	public static final int ALT_MIN = Sand.ALT_MAX;
	public static final int ALT_MAX = Mountain.ALT_MIN;
	//pourcentage de chance de pousser par case d'eau qui l'entoure
	private static final float EVOLUTION_RATE = 0.03f;

	public Earth() {
		texture = new Color(198, 162, 41);
		altitudeMin = ALT_MIN;
		altitudeMax = ALT_MAX;
	}

	public static Earth build() {
		if (null == _instance) {
			_instance = new Earth();
		}
		return _instance;
	}
	
	//de la terre a une chance d'evoluer en herbe
	@Override
	public void evolve(ArrayList<Cellule> oldEnv, ArrayList<Cellule> newEnv) {
		float growingRate = 0.0f;
		//on regarde chaque cellule si c'est de l'eau
		for(Cellule cell : oldEnv){
			if(cell.containFluid()){
				if(cell.getFluid().getType().equals(Water.getTypeName())){
					//si c'est le cas on augmente le pourcentage
					growingRate += EVOLUTION_RATE;
				}
			}
		}
		if(rand.nextFloat() < growingRate){
			newEnv.get(0).setLand(Land.Forest());
		}
	}
}
